package com.may;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.ProcessInstance;

/**
 * 启动流程实例。前提是已经完成流程部署
 * 概念：流程定义类似 java 中的 class，流程实例类似 java 中的实例对象。一个定义可以有多个实例对象
 *
 * 影响的表：
 * act_hi_actinst   已完成的活动信息
 * act_hi_identitylink  参与者信息
 * act_hi_procinst  流程实例
 * act_hi_taskinst  任务实例
 * act_ru_execution 执行表
 * act_ru_identitylink  参与者信息
 * act_ru_task  任务表
 */
public class ActivitiStartInstance {
    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        RuntimeService runtimeService = engine.getRuntimeService();
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("mybpm");//act_re_procdef 中的 key_
        System.out.println("流程部署id：\t"+processInstance.getDeploymentId());
        System.out.println("流程定义id：\t"+processInstance.getProcessDefinitionId());
        System.out.println("流程实例id：\t"+processInstance.getId());
        System.out.println("活动id：\t"+processInstance.getActivityId());
    }
}
